package com.drug.lib.util.web;

import android.graphics.Bitmap;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.drug.lib.util.DLog;

/**
 * 创建日期：2020/9/21 on 18:10
 * 描述:webview初始化工具类
 * 作者:zhq Administrator
 */
public class WebViewUtil {
    public static void initWebView(WebView webView, AndroidJs androidJs) {
        WebSettings webSettings = webView.getSettings();
        //如果访问的页面中要与Javascript交互，则webview必须设置支持Javascript
        webSettings.setJavaScriptEnabled(true);
        // 若加载的 html 里有JS 在执行动画等操作，会造成资源浪费（CPU、电量）
        // 在 onStop 和 onResume 里分别把 setJavaScriptEnabled() 给设置成 false 和 true 即可

        //设置自适应屏幕，两者合用
        webSettings.setUseWideViewPort(false); //将图片调整到适合webview的大小
        webSettings.setLoadWithOverviewMode(false); // 缩放至屏幕的大小

        //缩放操作
        webSettings.setSupportZoom(false); //支持缩放，默认为true。是下面那个的前提。
        webSettings.setBuiltInZoomControls(false); //设置内置的缩放控件。若为false，则该WebView不可缩放
        webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件

        //其他细节操作
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
        webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
        webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
        webSettings.setDomStorageEnabled(true);//DOM Storage
        //缓存设置
//        webSettings.setAppCachePath(false);
        /**
         * LOAD_CACHE_ONLY:  不使用网络，只读取本地缓存数据
         * LOAD_DEFAULT:  根据cache-control决定是否从网络上取数据。
         * LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
         * LOAD_NO_CACHE: 不使用缓存，只从网络获取数据.
         * LOAD_CACHE_ELSE_NETWORK，只要本地有，无论是否过期，或者no-cache，都使用缓存中的数据。
         */
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        webSettings.setAllowFileAccess(false);
        if (androidJs != null)
            webView.addJavascriptInterface(androidJs, "androidJs");
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                DLog.e("WebView开始加载");
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                DLog.e("WebView加载结束");
            }

            // 链接跳转都会走这个方法
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                DLog.e("WebView加载路径：" + url);
//                view.loadUrl(url);// 强制在当前 WebView 中加载 url

                return true;
            }
        });
    }


    /**
     * Android 调用 Js 方法 ， 有参数
     */
    public void btn_4(WebView webView) {
        webView.loadUrl("javascript:funJs('Android端传入的信息，div标签中显示,含参数')");
    }
}
